using System;
using System.Collections.Generic;
using System.Text;
using RoardersAgentSim.Map;

namespace RoardersAgentSim.Agent
{
	/// <summary>
	/// Advice class
	/// </summary>
	public class Advice
	{
		/// <summary>
		/// evacuation advice for zone h
		/// </summary>
		public int e_a;
		/// <summary>
		/// set of shelters which individuals in zone h are advised to travel to 
		/// </summary>
		public List<Shelter> S_a;
		/// <summary>
		/// set of links (OD specific path and mode) advised for individuals in zone
		/// </summary>
		public LinkPath P_a;
		/// <summary>
		/// amount of demand advised to travel on link k 
		/// </summary>
		public double[] q_a;
		/// <summary>
		/// amount of demand advised to travel from h to shelter s
		/// </summary>
		public double[,] q_a_hs;
		/// <summary>
		/// amount of demand advised to travel from h to shelter s (on link k)
		/// </summary>
		public double[, ,] q_a_hsk;

        public string Description
        {
            get
            {
                if (this.S_a != null && this.S_a.Count > 0)
                {
                    return "Advice = " + this.S_a[0].Description + (this.P_a == null ? " No path advised " : this.P_a.Description);
                }
                else
                {
                    return "Empty advice";
                }
            }
        }

	}

	/// <summary>
	/// General advice manager where the key is the zoneid and the advice is adressed to that zone
	/// </summary>
	public class AdviceManager: Dictionary<int,Advice>
	{

	}

}
